package com.cf.user.permission.service;

import com.cf.crud.service.BaseService;
import com.cf.user.permission.model.SystemPermission;
import com.cf.user.permission.model.SystemRole;
import com.cf.user.permission.vo.Menu;

import java.util.List;

public interface SystemPermissionService extends BaseService<SystemPermission> {
    //获取角色
    List<SystemRole> getRole();

    //创建角色
    void addRole(SystemRole systemRole);

    //删除角色
    void delRole(long id);

    //更新角色
    void updateRole(SystemRole systemRole);

    //获取角色权限
    List<SystemPermission> getRolePermission(long roleId);

    //增加角色权限
    void addRolePermission(long roleId, long permissionId);

    //删除角色权限
    void delRolePermission(long id);

    //获取权限
    List<SystemPermission> getPermission();

    //增加权限
    void addPermission(SystemPermission systemPermission);

    //删除权限
    void delPermission(long id);

    //是否具有权限
    boolean hasPermission(long userId, String path);

    //获取该用户的菜单
    List<Menu> getUserMenu(long userId);

    /**
     * 获取用户的权限树
     *
     * @return
     */
    List<Menu> getPermissionTree();

    /**
     * 更新角色的权限
     *
     * @param roleId
     * @param permissionId
     * @return
     */
    boolean updateRolePermission(long roleId, List<Long> permissionId);

    /**
     * 获取用户的权限
     *
     * @param userId
     * @return
     */
    List<SystemPermission> userPermission(long userId);
}
